#ifndef __MYMOTO_BEEP_H
#define __MYMOTO_BEEP_H

#include "n32g45x.h"

#define LED_PWM  1
#define VIBRATION_ALARM 0X02

#define GPIO_PORT_MOTO    	GPIOA
#define GPIO_CLK_MOTO     	RCC_APB2_PERIPH_GPIOA
#define GPIO_PIN_MOTO     	GPIO_PIN_7

#define GPIO_PORT_CTR    	GPIOA
#define GPIO_CLK_CTR     	RCC_APB2_PERIPH_GPIOA
#define GPIO_PIN_CTR     	GPIO_PIN_9

#define GPIO_PORT_BEEP   	GPIOB
#define GPIO_CLK_BEEP    	RCC_APB2_PERIPH_GPIOB
#define GPIO_PIN_BEEP    	GPIO_PIN_15

#define GPIO_PORT_CHRG   	GPIOA
#define GPIO_CLK_CHRG    	RCC_APB2_PERIPH_GPIOA
#define GPIO_PIN_CHRG    	GPIO_PIN_12

#define GPIO_PORT_VUSB   	GPIOA
#define GPIO_CLK_VUSB    	RCC_APB2_PERIPH_GPIOA
#define GPIO_PIN_VUSB    	GPIO_PIN_4




#define RCC_ALL_CLK 	(GPIO_CLK_MOTO | GPIO_CLK_CTR  | GPIO_CLK_BEEP | GPIO_CLK_CHRG | GPIO_CLK_VUSB)


#define POWER_CTR_EN(x)   			if(1 == x)GPIO_SetBits(GPIO_PORT_CTR, GPIO_PIN_CTR);\
									else if(0 == x)GPIO_ResetBits(GPIO_PORT_CTR, GPIO_PIN_CTR);
					 
#define BEEP_EN(x)   				if(1 == x)GPIO_SetBits(GPIO_PORT_BEEP, GPIO_PIN_BEEP);\
									else if(0 == x)GPIO_ResetBits(GPIO_PORT_BEEP, GPIO_PIN_BEEP);
					 			 
#define MOTO_EN(x)   				if(1 == x)GPIO_SetBits(GPIO_PORT_MOTO, GPIO_PIN_MOTO);\
									else if(0 == x)GPIO_ResetBits(GPIO_PORT_MOTO, GPIO_PIN_MOTO);					 
					 
#define CHRG_LEVEL_DETECTION()	 	GPIO_ReadInputDataBit(GPIO_PORT_CHRG, GPIO_PIN_CHRG)	 
#define VUSB_LEVEL_DETECTION()	 	GPIO_ReadInputDataBit(GPIO_PORT_VUSB, GPIO_PIN_VUSB)	 



//LED

#define GPIO_PORT_LED1    GPIOB
#define GPIO_CLK_LED1     RCC_APB2_PERIPH_GPIOB
#define GPIO_PIN_LED1     GPIO_PIN_3
 
#define GPIO_PORT_LED2    GPIOB
#define GPIO_CLK_LED2     RCC_APB2_PERIPH_GPIOB
#define GPIO_PIN_LED2 	  GPIO_PIN_4


#define LED1_OFF  	GPIO_SetBits(GPIO_PORT_LED1, GPIO_PIN_LED1);
#define LED1_ON		GPIO_ResetBits(GPIO_PORT_LED1, GPIO_PIN_LED1);
#define LED2_OFF	GPIO_SetBits(GPIO_PORT_LED2, GPIO_PIN_LED2);
#define LED2_ON		GPIO_ResetBits(GPIO_PORT_LED2, GPIO_PIN_LED2);

#define RCC_ALL_LED 	(GPIO_CLK_LED1 | GPIO_CLK_LED2)



#define TIMy  						TIM2
#define RCC_EnableAPByPeriphClk 	RCC_EnableAPB1PeriphClk
#define RCC_APB2_PERIPH_TIMy 		RCC_APB1_PERIPH_TIM2
#define GPIO_PartialRemap1_TIMy 	GPIO_PartialRemap1_TIM2


#define TIMz  						TIM3
#define RCC_EnableAPBzPeriphClk 	RCC_EnableAPB1PeriphClk
#define RCC_APB2_PERIPH_TIMz 		RCC_APB1_PERIPH_TIM3
#define GPIO_PART1_RMP_TIMz 		GPIO_PART1_RMP_TIM3


void LED_Init(void);
void LED_Bright_Pro(void);
void LED_Bright_Set(uint8_t ucBright);
void LED_SetOutPWM(uint32_t ulDutyCycle);
void xPin_Init(void);
void Vibration_Pro(void);
void Key_Vibration(void);
void Key_Vibration2(void);
void Vibration_Start(uint16_t usVibration_Number, uint8_t ucVB_Time);
void MY_IWDG_Init(void);
#endif

